package com.ruicar.afs.cloud.apply.admin.manage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruicar.afs.cloud.apply.admin.manage.condition.ApplyUserCondition;
import com.ruicar.afs.cloud.apply.admin.manage.entity.*;
import com.ruicar.afs.cloud.common.core.util.IResponse;
import com.ruicar.afs.cloud.common.modules.apply.enums.CarTypeEnum;

import java.util.List;

/**
 * @author xudongdong
 * @date 2020-06-03
 */
public interface ApplyUserService extends IService<SysUser> {

    List<SysRole> findRolesByUserId(Long id, CarTypeEnum businessType);

    List<SysRole> findRolesByUserIdTemp(Long id, CarTypeEnum businessType);

    List<String> findUserName(String userName);

    List<SysChannelWitnessInfo> getWitnessList(String sp, String identityNumber);

    void saveUser(ApplyUserCondition userCondition);

    IResponse<Boolean> saveUserTemp(ApplyUserCondition userCondition);

    IResponse<Boolean> editUserTemp(ApplyUserCondition userCondition);

    void chackRole(ApplyUserCondition userCondition);

    void enableUser(Long id);

    /**
     * 获取部门下区域信息
     *
     * @param username
     * @param businessType
     * @param parentId
     * @return
     */
    public List<SysDeptAuthRegion> getDeptAddressList(String username, CarTypeEnum businessType, String parentId);

    /**
     * 获取用户所有角色
     *
     * @param id
     * @return
     */
    List<SysRole> findRolesInfo(Long id);

    /**
     * 同部门和同角色的用户
     *
     * @param condition
     * @return
     */
     List<SysUser> getTransferUser(ApplyUserCondition condition,List<Long> ids);
    // 返回管理的角色id
     List<Long> getAdminId();
    // 返回新车管理的角色id
     List<Long> getNewAdminId();
    // 返回二手车管理的角色id
     List<Long> getOldAdminId();
    // 返回新车进件角色id
     List<Long> getNewApply();
    // 返回二手车进件角色id
     List<Long> getOldApply();
    // 返回新车所有角色不包含佣金 和贷后
     List<Long> getNewRole();
    // 返回二手所有角色不包含佣金和贷后
     List<Long> getOldRole();
     // 返回新车需要见证人的角色id
     List<Long> getNewIdCarRoleId();

    // 返回二手车需要见证人的角色id
    List<Long> getOldIdCarRoleId();

    void addOrUpUser(Long id, String carType, List<SysUserRole> applyUserRoleList,List<SysUserRoleTemp> applyUserRoleTempList,SysRole loan,SysRole brokerage, List<Long> loanAnd);
}
